<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script type="text/javascript">
    // 首先，我们新建一个变量，用于储存之后传递个回调函数的整个arguments对象
    var glob;

    // 然后定义一个正则表达式，我们将email地址分成三个匹配组，具体格式形如xxxx@xxxx.xxxx
    var re = /(.*)@(.*)\.(.*)/;

    // 最后定义回掉函数，他会接受glob数组中的参数，并返回相应的替换内容
    var callback = function() {
        glob = arguments;
        return arguments[1] + ' at ' + arguments[2] + ' dot ' + arguments[3];
    }

    // 最后就可以这样使用了
    console.log('lambortao@gmail.com'.replace(re,callback));

    // 下面是该回调函数返回的参数内容
    console.log(glob);
</script>
<script type="text/javascript">
    // 分割字符串
    var csv = 'one, two,three , four';
    console.log(csv.split(','));

    // 由于上面的输入字符串中存在逗号前后的空格不一致的情况，导致生成的数组也会出现多余的空格。如果我们使用正则表达式，就可以在这里使用\s*修饰来解决，意思就是‘匹配0个或多个空格’
    console.log(csv.split(/\s*,\s*/));

</script>
<script type="text/javascript">
    // 下面的replace()方法直接使用字符串参数来执行替换
    console.log('test'.replace('t','r'));

    // 他和下面的这个调用是等价的
    console.log('test'.replace(new RegExp('t'),'r'));

    // 使用字符串而不是正则表达式来替换文本比较常见的错误是，使用者往往会误以为源字符串中所有的匹配元素都会被替换，其实并没有使用global修饰符，所以只有匹配到的第一个字符串才会被替换
    console.log('pool'.replace('o','*'));
    console.log('pool'.replace(/o/g,'*'));
</script>
</body>
</html>
